import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;


public class Ejercicio1 {
	
	static void leerArchivo() throws IOException {
		BufferedReader br = new BufferedReader(new FileReader(new File("Tp2Ej1.in")));
		BufferedWriter bw = new BufferedWriter(new FileWriter(new File("resultado.out")));
		ArrayList<Integer> pesosAristas = new ArrayList<Integer>();
		int cantNodos = 0;
		String [] linea = br.readLine().trim().split("\\s+");
		while(Integer.parseInt(linea[0]) != -1) {
			cantNodos = Integer.parseInt(linea[0]);
		
			for (int i = 1; i <= cantNodos; i++) {
				pesosAristas.add(Integer.parseInt(linea[i]));
			}
			bw.append((matchingMaximo(cantNodos, pesosAristas).toString()));
			bw.newLine();
			pesosAristas.clear();
			linea = br.readLine().trim().split("\\s+");
		}
		br.close();
		bw.close();
	}

	public static Integer matchingMaximo(int cantNodos, ArrayList<Integer> pesosAristas) {
		return Math.max(matchingMaximoAux(pesosAristas.subList(0, pesosAristas.size() - 1), pesosAristas.size() - 1), 
						matchingMaximoAux(pesosAristas.subList(1, pesosAristas.size() - 2), pesosAristas.size() - 3) + pesosAristas.get(pesosAristas.size() - 1));
	}
	
	
	public static int matchingMaximoAux(List<Integer> subPesosAristas, int longitud) {
		if(longitud == 0) {
			return 0;
		} 
		
		if(longitud == 1) {
			return subPesosAristas.get(0);
		}
		
		if(longitud == 2) {
			return Math.max(subPesosAristas.get(0), subPesosAristas.get(1));
		}
		
		if(longitud == 3) {
			return Math.max(subPesosAristas.get(1), subPesosAristas.get(0) + subPesosAristas.get(2));
		
		} else {
			Integer resA, resB, resC;
			resA = subPesosAristas.get(0);
			resB = Math.max(subPesosAristas.get(0), subPesosAristas.get(1));
			resC = Math.max(subPesosAristas.get(1), subPesosAristas.get(0) + subPesosAristas.get(2));
			
			for (int i = 3; i < longitud; i++) {
				resA = resC;
				resC = Math.max(resC, resB + subPesosAristas.get(i));
				resB = resA;
			}
			
			return resC;
		}
	}

	public static void main(String args[]) {
		try {
			leerArchivo();
		} catch (IOException e) {
			System.out.println("Excepcion producida durante la I/O");
			e.printStackTrace();
		}
	}
}
